﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using HMS_Hospital_Team2._6.BL;
using HMS_Hospital_Team2._6.DA;
using System.Windows.Forms;

namespace HMS_Hospital_Team2._6.GUI
{
    public partial class UcPhongBan : UserControl
    {
        public UcPhongBan()
        {
            InitializeComponent();
        }
        // Khai báo biến xử lý nút "Sửa"
        bool Edit;
        // DA
        HMSHospitalEntities context = new HMSHospitalEntities();
        // BL
        PhongBanBL pban = new PhongBanBL();
        // Xử lí nút "Tạo mới"
        private void btnTaomoi_PhBan_Click(object sender, EventArgs e)
        {
            LamMoi();
            grcThongtinPB_PB.Enabled = true;
            // button
            btnSua_PhBan.Enabled = false;
            btnLamMoi_PhBan.Enabled = true;
            btnLuu_PhBan.Enabled = true;
            // Readonly ....
            txtTenPB_PhBan.Properties.ReadOnly = false;
            txtMaPhongBan.Properties.ReadOnly = false;
            memoGhiChu_PhBan.Properties.ReadOnly = false;
            chkTrangThai_PB.Properties.ReadOnly = false;
            cmbLoaiPB_PB.Enabled = true;
            cmbTHNhomDV_PB.Enabled = true;
            // Làm mới combobox với memo...
            cmbLoaiPB_PB.SelectedIndex = 0;
            cmbTHNhomDV_PB.SelectedIndex = 0;
            txtTenPB_PhBan.Text = "";
            memoGhiChu_PhBan.Text = "";
            chkTrangThai_PB.Checked = false;
            //Ghi nhận
            Edit = true;
        }
        // Hàm load Data lên gridview
        private void UcPhongBan_Load(object sender, EventArgs e)
        {
            // Load dữ liệu lên gridview
            grcDanhsachPB_PB.DataSource = pban.LoadDuLieuBL();
            // Load dữ liệu tên loại phòng ban
            cmbLoaiPB_PB.DataSource = pban.LoadDuLieuTlpb();
            cmbLoaiPB_PB.DisplayMember = "TenLoaiPhong";
            cmbLoaiPB_PB.ValueMember = "MaLoaiPhong";
            // Load dữ liệu tên nhóm dịch vụ
            cmbTHNhomDV_PB.DataSource = pban.LoadDuLieuTnDV();
            cmbTHNhomDV_PB.DisplayMember = "TenNhomDV";
            cmbTHNhomDV_PB.ValueMember = "MaNhomDV";
        }
        // Xử lý khi user clik vào danh sách thì thông tin trên bảng sẽ được hiện lên group Thông tin phòng ban 
        private void grDanhsachPB_PB_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
        {
            // Load dữ liệu chi tiết
            LoadThongTinPB();
        }
        // Button "Lưu"
        private void btnLuu_PhBan_Click(object sender, EventArgs e)
        {
            while (kiemtraloi() == true)
            {
                if (Edit == true)
                {
                    // Chạy hàm Tạo mới phòng ban
                    TaoMoiPB();
                    MessageBox.Show("Tạo mới thành công!", "Thông báo");
                    //LamMoi();
                }
                else
                {
                    // Chạy hàm Sửa phòng ban
                    SuaPB();
                    MessageBox.Show("Sửa thành công!", "Thông báo");
                    //LamMoi();
                    //
                    btnLuu_PhBan.Enabled = false;
                    btnTaomoi_PhBan.Enabled = true;

                }
                // Load data mới lên girdview
                grcDanhsachPB_PB.DataSource = pban.LoadDuLieuBL();
                // Load data mới tạo hoặc mới sửa lên group
                LoadThongTinPB();
                break;
            }
        }
        // Button "Làm mới"
        private void btnLamMoi_PhBan_Click(object sender, EventArgs e)
        {
            // Chạy hàm Làm mới
            LamMoi();
        }
        // Button "Sửa"
        private void btnSua_PhBan_Click(object sender, EventArgs e)
        {
            // Bỏ read only cho các textbox....
            txtMaPhongBan.Properties.ReadOnly = true;
            cmbLoaiPB_PB.Enabled = true;
            cmbTHNhomDV_PB.Enabled = true;
            txtTenPB_PhBan.Properties.ReadOnly = false;
            memoGhiChu_PhBan.Properties.ReadOnly = false;
            chkTrangThai_PB.Properties.ReadOnly = false;
            // Enable 2 nút Lưu và Làm mới
            btnLuu_PhBan.Enabled = true;
            btnLamMoi_PhBan.Enabled = false;
            btnTaomoi_PhBan.Enabled = false;
            btnSua_PhBan.Enabled = false;
            // Ghi nhận
            Edit = false;

        }

        /*
         * Những hàm xử lý
         */

        // Xử lý button "Tạo mới"
        void TaoMoiPB()
        {
            string sMaPhongBan = txtMaPhongBan.Text;
            string TenLpb = cmbLoaiPB_PB.SelectedValue.ToString();
            string Tenpb = txtTenPB_PhBan.Text;
            string TenNdv = cmbTHNhomDV_PB.SelectedValue.ToString();
            string Ghichu = memoGhiChu_PhBan.Text;
            bool Trangthai = true;
            if (chkTrangThai_PB.Checked == true)
            {
                Trangthai = true;
            }
            if (chkTrangThai_PB.Checked == false)
            {
                Trangthai = false;
            }
            BL.PhongBanBL.TaoMoiPB(sMaPhongBan, TenLpb, Tenpb, TenNdv, Ghichu, Trangthai);
        }
        // Xử lý button "Sửa"
        void SuaPB()
        {
            string sMaPhongBan = (string)grDanhsachPB_PB.GetRowCellValue(grDanhsachPB_PB.FocusedRowHandle, grDanhsachPB_PB.Columns[0]);
            string TenLpb = cmbLoaiPB_PB.SelectedValue.ToString();
            string Tenpb = txtTenPB_PhBan.Text;
            string TenNdv = cmbTHNhomDV_PB.SelectedValue.ToString();
            string Ghichu = memoGhiChu_PhBan.Text;
            bool Trangthai = true;
            if (chkTrangThai_PB.Checked == true)
            {
                Trangthai = true;
            }
            if (chkTrangThai_PB.Checked == false)
            {
                Trangthai = false;
            }
            BL.PhongBanBL.SuaPB(sMaPhongBan, TenLpb, Tenpb, TenNdv, Ghichu, Trangthai);
        }
        // Xử lý button "Làm mới"
        void LamMoi()
        {
            // Làm mới mọi thứ trong group Thông tin phòng ban
            txtMaPhongBan.Text = "";
            cmbLoaiPB_PB.SelectedIndex = 0;
            txtTenPB_PhBan.Text = "";
            cmbTHNhomDV_PB.SelectedIndex = 0;
            memoGhiChu_PhBan.Text = "";
            chkTrangThai_PB.Checked = false;
        }
        // Xử lý hàm Load thông tin chi tiết
        void LoadThongTinPB()
        {
            // Enable group Thông tin phòng ban
            grcThongtinPB_PB.Enabled = true;
            btnSua_PhBan.Enabled = true;
            btnLuu_PhBan.Enabled = false;
            btnLamMoi_PhBan.Enabled = false;
            // Xử lý chỉ cho user xem không được sửa
            txtMaPhongBan.Properties.ReadOnly = true;
            txtTenPB_PhBan.Properties.ReadOnly = true;
            cmbLoaiPB_PB.Enabled = false;
            cmbTHNhomDV_PB.Enabled = false;
            memoGhiChu_PhBan.Properties.ReadOnly = true;
            chkTrangThai_PB.Properties.ReadOnly = true;
            // Load chi tiết các data được chọn trên bảng
            using (HMSHospitalEntities show = new HMSHospitalEntities())
            {
                string MaPb = (string)grDanhsachPB_PB.GetRowCellValue(grDanhsachPB_PB.FocusedRowHandle, grDanhsachPB_PB.Columns[0]);
                var Thongtin = (from tt in show.PhongBans
                                where tt.MaPhongBan == MaPb
                                select tt).FirstOrDefault<PhongBan>();
                txtMaPhongBan.Text = Thongtin.MaPhongBan;
                txtTenPB_PhBan.Text = Thongtin.TenPhongBan;
                cmbLoaiPB_PB.SelectedValue = Thongtin.MaLoaiPhong;
                cmbTHNhomDV_PB.SelectedValue = Thongtin.MaNhomDV;
                memoGhiChu_PhBan.Text = Thongtin.GhiChu;
                if (Thongtin.TrangThai == true)
                {
                    chkTrangThai_PB.Checked = true;
                }
                else
                    chkTrangThai_PB.Checked = false;
            }
        }
        // Hàm không cho nhập các ký tự đặc biệt ở textbox Ten phòng ban
        private void txtTenPB_PhBan_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsNumber(e.KeyChar) && !Char.IsControl(e.KeyChar) && !Char.IsLetter(e.KeyChar) && !Char.IsWhiteSpace(e.KeyChar))
                e.Handled = true;
        }
        // Hàm bắt lỗi
        public bool kiemtraloi()
        {
            int count = 0;
            if (txtTenPB_PhBan.Text.Trim() == "")
            {
                count++;
            }
            if (count == 0)
            {
                return true;
            }
            else
            {
                MessageBox.Show("Vui lòng nhập Tên phòng ban !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtTenPB_PhBan.Focus();
                return false;
            }

        }
    }
}
